//
//  GDMOriginalView.swift
//  SinaWeibo
//
//  Created by mac on 15/11/30.
//  Copyright © 2015年 mac. All rights reserved.
//

import UIKit

import SDWebImage

import SnapKit

class GDMOriginalView: UIView {

//    记录约束的属性
    var bottomConstraint : Constraint?
    
//    加载模型数组中的内容,拿的是最大的那个数据模型
    var homeStatuseModel : GDMHomeStatusModel? {
        
        didSet {
            
//            给每一个控件赋值
            headImage.sd_setImageWithURL(homeStatuseModel?.user?.headImageUrl, placeholderImage : UIImage(named : "avatar_default_big"))
            nameLabel.text = homeStatuseModel?.user?.name
            verified_type_image.image = homeStatuseModel?.user?.verified_type_image
            mbrankImage.image = homeStatuseModel?.user?.mbrankImage
            timeLabel.text = homeStatuseModel?.created_at
            soucesLabel.text = homeStatuseModel?.source
            contenLabel.text = homeStatuseModel?.text
            
//            没有在闭包里面，可以不用使用self
            bottomConstraint?.uninstall()
            
//           现在的这种判断就相当于了if中的嵌套if的那种类型，和OC中的&&的作用是一样的
            if let url = homeStatuseModel?.imageUrl where url.count != 0 {
            
                pictView.imageURLs = url
//                更改配图
//                self.snp_makeConstraints(closure: { (make) -> Void in
//                    make.bottom.equalTo(pictView.snp_bottom).offset(StatusCellMargin)
//                })
                
//                update的用法要是没有的这一条数据就给他进行跟新并且添加，要是约束存在的时候就进行更新
//                就算是更新这个约束，他还是存在的，因为在cell进行复用的时候，他的越是也会跟着进行复用，所以，解决他的办法就是每一次来到这里之前，把上一次的约束去除掉，用一个属性记录一下，每一次的约束，在下一次到来的时候去除上一次的约束
                self.snp_updateConstraints(closure: { (make) -> Void in
                    self.bottomConstraint = make.bottom.equalTo(pictView.snp_bottom).offset(StatusCellMargin).constraint
                })
                
//                现在这样虽然约束没有了问题，但是配图他也会给我复用，为了防止配图的复用,防止的是在没有配图的地方，在复用的时候会有配图 
                pictView.hidden = false
                
            }else {
                
//                没有配图视图
//                self.snp_makeConstraints(closure: { (make) -> Void in
//                    make.bottom.equalTo(contenLabel.snp_bottom).offset(StatusCellMargin)
//                })
                self.snp_updateConstraints(closure: { (make) -> Void in
                    
                  self.bottomConstraint = make.bottom.equalTo(contenLabel.snp_bottom).offset(StatusCellMargin).constraint
                })
                
                pictView.hidden = true
            }
            
        }
        
    }
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
//        backgroundColor = UIColor(white: 0.8, alpha: 1)
        
        setupUI()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
//    加载这个上面的视图
    private func setupUI (){
        
        addSubview(headImage)
        
        addSubview(nameLabel)
        
        addSubview(verified_type_image)
        
        addSubview(mbrankImage)
        
        addSubview(timeLabel)
        
        addSubview(soucesLabel)
        
        addSubview(contenLabel)
        
        addSubview(pictView)
        
        addSubview(setView)
        
        setView.backgroundColor = UIColor.orangeColor()
        
//        每一个cell之间有一个距离
        setView.snp_makeConstraints { (make) -> Void in
            
            make.top.left.right.equalTo(self)
            make.height.equalTo(10)
        }
        
        pictView.snp_makeConstraints { (make) -> Void in
            
            make.top.equalTo(contenLabel.snp_bottom).offset(StatusCellMargin)
            make.left.equalTo(contenLabel.snp_left)
//            我已经在它的里面已经自己定义了他的大小
//            make.size.equalTo(CGSize(width: 100, height: 100))
        }
        
//        更改他的配图，设置下面的距离是否正常
        
        self.snp_makeConstraints { (make) -> Void in
            
//            make.bottom.equalTo(pictView.snp_bottom).offset(StatusCellMargin)
//            使用记录属性进行记录,每一次在来的时候就把上一次的记录清楚掉，就不会因为cell的的复用，造成约束的复用
            self.bottomConstraint = make.bottom.equalTo(pictView.snp_bottom).offset(StatusCellMargin).constraint
        }
        
        contenLabel.snp_makeConstraints { (make) -> Void in
            
            make.left.equalTo(headImage.snp_left)
            make.top.equalTo(headImage.snp_bottom).offset(StatusCellMargin)
        }
        
        soucesLabel.snp_makeConstraints { (make) -> Void in
            
            make.left.equalTo(timeLabel.snp_right).offset(StatusCellMargin)
            make.bottom.equalTo(timeLabel.snp_bottom)
        }
        
        timeLabel.snp_makeConstraints { (make) -> Void in
            
            make.left.equalTo(headImage.snp_right).offset(StatusCellMargin)
            make.bottom.equalTo(headImage.snp_bottom)
        }
        
        mbrankImage.snp_makeConstraints { (make) -> Void in
            
            make.left.equalTo(nameLabel.snp_right).offset(StatusCellMargin)
            make.top.equalTo(nameLabel.snp_top)
            make.size.equalTo(CGSize(width: 15, height: 15))
        }
        
        verified_type_image.snp_makeConstraints { (make) -> Void in
            
            make.centerX.equalTo(headImage.snp_right)
            make.centerY.equalTo(headImage.snp_bottom)
            
        }
        
        nameLabel.snp_makeConstraints { (make) -> Void in
            make.left.equalTo(headImage.snp_right).offset(StatusCellMargin)
            make.top.equalTo(headImage)
        }
        
//        设置约束
        headImage.snp_makeConstraints { (make) -> Void in
            make.top.equalTo(setView.snp_bottom).offset(StatusCellMargin)
            make.left.equalTo(self).offset(StatusCellMargin).offset(StatusCellMargin)
            make.size.equalTo(CGSize(width: StatusCellImageWidth, height: StatusCellImageWidth))
        }
        
    }
    
//    TODO :懒加载视图
//    头像的视图
    private lazy var setView : UIView = UIView()
    private lazy var headImage : UIImageView = UIImageView()
    private lazy var nameLabel : UILabel = UILabel(title: "你好啊", color: UIColor.blackColor(), fontSize: 14)
//    是否是会员
    private lazy var mbrankImage : UIImageView = UIImageView(image: UIImage(named: "common_icon_membership"))
    private lazy var verified_type_image : UIImageView = UIImageView(image: UIImage(named: "avatar_enterprise_vip"))
    private lazy var timeLabel : UILabel = UILabel(title: "。。。。。", color: UIColor.orangeColor(), fontSize: 12)
    private lazy var soucesLabel : UILabel = UILabel(title: "你猜猜", color: UIColor.darkGrayColor(), fontSize: 12)
    private lazy var contenLabel : UILabel = UILabel(title: "我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王我是女王", color: UIColor.darkGrayColor(), fontSize: 14, margin: StatusCellMargin)
    private lazy var pictView : GDMStatusPictView = GDMStatusPictView()
}
